var adminApp = angular.module('adminApp',['ui.router','ui.bootstrap','angularFileUpload','addressModule']);

/**
 * 由于整个应用都会和路由打交道，所以这里把$state和$stateParams这两个对象放到$rootScope上，方便其它地方引用和注入。
 * 这里的run方法只会在angular启动的时候运行一次。
 * @param  {[type]} $rootScope
 * @param  {[type]} $state
 * @param  {[type]} $stateParams
 * @return {[type]}
 */
adminApp.run(function($rootScope, $state, $stateParams) {
    $rootScope.$state = $state;
    $rootScope.$stateParams = $stateParams;
});

/**
 * 配置路由。
 * 注意这里采用的是ui-router这个路由，而不是ng原生的路由。
 * ng原生的路由不能支持嵌套视图，所以这里必须使用ui-router。
 * @param  {[type]} $stateProvider
 * @param  {[type]} $urlRouterProvider
 * @return {[type]}
 */
adminApp.config(function($stateProvider, $urlRouterProvider,$httpProvider){
    //Defines a path that is used when an invalid route is requested.
    $urlRouterProvider.otherwise('/login');
    $stateProvider.state('login',{
        url: '/login',
        views : {
            '':{
                templateUrl : '/uj-admin-tpls/login.html'
            }
        }
    }).state('index',{
        url:'/index',
        views:{
            '':{
                templateUrl : '/uj-admin-tpls/home.html'
            },
            'nav@index':{
                templateUrl : '/uj-admin-tpls/nav.html'
            },
            'main@index' : {
                templateUrl : '/uj-admin-tpls/goods.html'
            }
        }
    }).state('index.taskMng',{
        url: '/taskMng',
        views : {
            'main@index':{
                templateUrl : '/uj-admin-tpls/task.html'
            }
        }
    }).state('index.goodsMng',{
        url: '/goodsMng',
        views : {
            'main@index':{
                templateUrl : '/uj-admin-tpls/goods.html'
            }
        }
    }).state('index.goodsForm', {
        url : '/goodsForm/:id',
        views : {
            'main@index':{
                templateUrl : '/uj-admin-tpls/goodsForm.html'
            }
        }
    }).state('index.goodsUpload', {
        url : '/goodsUpload/:id',
        views : {
            'main@index':{
                templateUrl : '/uj-admin-tpls/goodsUpload.html'
            }
        }
    }).state('index.wineryMng', {
        url : '/wineryMng',
        views : {
            'main@index':{
                templateUrl : '/uj-admin-tpls/winery.html'
            }
        }
    }).state('index.wineryForm',{
        url : '/wineryForm/:id',
        views : {
            'main@index':{
                templateUrl : '/uj-admin-tpls/wineryForm.html'
            }
        }
    }).state('index.wineryUpload', {
        url : '/wineryUpload/:id',
        views : {
            'main@index':{
                templateUrl : '/uj-admin-tpls/wineryUpload.html'
            }
        }
    }).state('index.inventoryForm',{
        url : '/inventoryForm/:id/:name',
        views : {
            'main@index':{
                templateUrl : '/uj-admin-tpls/inventoryForm.html'
            }
        }
    }).state('index.categoryMng' , {
        url : '/categoryMng',
        views : {
            'main@index':{
                templateUrl : '/uj-admin-tpls/category.html'
            }
        }
    }).state('index.parametersMng' , {
        url : '/parametersMng',
        views : {
            'main@index':{
                templateUrl : '/uj-admin-tpls/parameters.html'
            }
        }
    }).state('index.parametersForm',{
        url : '/parametersForm/:id',
        views : {
            'main@index':{
                templateUrl : '/uj-admin-tpls/parametersForm.html'
            }
        }
    }).state('index.memberMng',{
        url : '/memberMng',
        views : {
            'main@index':{
                templateUrl : '/uj-admin-tpls/member.html'
            }
        }
    }).state('index.memberForm',{
        url : '/memberForm/:id',
        views : {
            'main@index':{
                templateUrl : '/uj-admin-tpls/memberForm.html'
            }
        }
    }).state('index.orderMng',{
        url : '/orderMng',
        views : {
            'main@index':{
                templateUrl : '/uj-admin-tpls/order.html'
            }
        }
    }).state('index.orderForm',{
        url : '/orderForm/:id',
        views : {
            'main@index':{
                templateUrl : '/uj-admin-tpls/orderForm.html'
            }
        }
    }).state('index.repurchaseMng',{
        url : '/repurchaseMng',
        views : {
            'main@index':{
                templateUrl : '/uj-admin-tpls/repurchase.html'
            }
        }
    }).state('index.repurchaseForm',{
        url : '/repurchaseForm/:id',
        views : {
            'main@index':{
                templateUrl : '/uj-admin-tpls/repurchaseForm.html'
            }
        }
    }).state('index.activityMng',{
        url:'/activityMng',
        views:{
            'main@index':{
                templateUrl:'uj-admin-tpls/activity.html'
            }
        }
    }).state('index.withdrawMng',{
        url : '/withdrawMng',
        views : {
            'main@index':{
                templateUrl : '/uj-admin-tpls/withdraw.html'
            }
        }
    }).state('index.topBannerMng',{
        url : '/topBannerMng',
        views : {
            'main@index':{
                templateUrl : '/uj-admin-tpls/topBanner.html'
            }
        }
    }).state('index.topBannerForm',{
        url : '/topBannerForm/:id',
        views : {
            'main@index':{
                templateUrl : '/uj-admin-tpls/topBannerForm.html'
            }
        }
    }).state('index.topBannerUpload', {
        url : '/topBannerUpload/:id',
        views : {
            'main@index':{
                templateUrl : '/uj-admin-tpls/topBannerUpload.html'
            }
        }
    }).state('index.storeMng',{
        url : '/storeMng',
        views : {
            'main@index':{
                templateUrl : '/uj-admin-tpls/store.html'
            }
        }
    }).state('index.storeForm',{
        url : '/storeForm/:id',
        views : {
            'main@index':{
                templateUrl : '/uj-admin-tpls/storeForm.html'
            }
        }
    }).state('index.storeUpload', {
        url : '/storeUpload/:id',
        views : {
            'main@index':{
                templateUrl : '/uj-admin-tpls/storeUpload.html'
            }
        }
    }).state('demo',{
        url: '/demo',
        views : {
            '':{
                templateUrl : '/uj-admin-tpls/demo.html'
            }
        }
    });

    $httpProvider.interceptors.push('httpRequestInterceptor');
});

adminApp.factory('httpRequestInterceptor', function($q, $location){

    return{
        'responseError' : function(rejection){
            if(rejection.status == 400 && rejection.data.errorCode == "LoginRequired"){
                window.location = '/uj-admin';
            }

            return $q.reject(rejection);
        }

    }

});